﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClickLand.CorporacionPlaza.Presentacion.Contratos.AdministracionContrato;
using ClickLand.CorporacionPlaza.Presentacion.CorporacionPlazaWS;
using ClickLand.CorporacionPlaza.Presentacion.Presentadores.AdministracionContrato;
using ClickLand.Web.UI.WebControls;
using Resources;

namespace AdministracionContrato
{
    public partial class AdministrarContratos : Page, IAdministrarContrato
    {
        #region Atributos

        /// <summary> Variable que posee la definicion del presentador de la vista</summary>
        private PresentadorAdministrarContrato _presentador;

        #endregion

        #region Eventos

        /// <summary> Metodo que se ejeuta cuando se da inicia la pagina </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            btnModificarDetalle.Visible = Edicion;

            if (!IsPostBack)
            {
                _presentador.CargarPagina();
                Contrato = null;
                btnImprimir.Visible = false;
                return;
            }
            mvAdministrarContrato.SetActiveView(vBusqueda);
        }


        /// <summary>Evento de inicializacion de la página.</summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void Page_Init(object sender, EventArgs e)
        {
            _presentador = new PresentadorAdministrarContrato(this);
        }


        /// <summary>Evento que se ejecuta cuando se da click al boton de buscar.</summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnBuscarContratosClick(object sender, EventArgs e)
        {
            _presentador.BuscarContrato();
            btnImprimir.Visible = ListaContratos.Count > 0;
        }


        /// <summary> Evento que se ejecuta cuando se selecciona el contrato </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void GvDatosContratosIndexChange(object sender, EventArgs e)
        {
        }


        /// <summary>Evento que se ejecuta cuando se da click al boton de regresar en el detalle del contrato.</summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnRegresarDetalleCLick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vBusqueda);
        }


        /// <summary>Evento que se ejecuta cuando se da click al boton de Modificar en el detalle del contrato.</summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnModificarDetalleClick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(_presentador.ModificarContrato() ? vMensajeExito : vMensajeError);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al linkbutton de agregar fiador </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void LbAgregarFiadorClick(object sender, EventArgs e)
        {
            Edicion = true;
            AgregarFiador = true;
            mvAdministrarContrato.SetActiveView(vAgregarGarantia);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al radio buton de fiador </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void RbFiadorChecked(object sender, EventArgs e)
        {
            pnFiador.Visible = rbFiador.Checked;
            pnMontoGarantia.Visible = !rbFiador.Checked;
        }


        /// <summary> Metodo que se ejecuta cuando se da click al radio buton de Deposito </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void RbDepositoChecked(object sender, EventArgs e)
        {
            pnFiador.Visible = !rbDeposito.Checked;
            pnMontoGarantia.Visible = rbDeposito.Checked;
            lblTituloMontoGarantia.Visible = rbDeposito.Checked;
            tbMontoGarantia.Visible = rbDeposito.Checked;
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton siguiente de agregar fiador </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnRegresarAgregarGarantiaClick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vDetalle);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton siguiente en agregar garantia </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnSiguienteAgregarGarantiaClick(object sender, EventArgs e)
        {
            Page.Validate(rbFiador.Checked ? "AgregarFiador" : "AgregarDeposito");
            if (Page.IsValid)
            {
                if (AgregarFiador)
                    _presentador.AgregarFiador();
                else
                    _presentador.ModificarFiador(IdFiador);
                mvAdministrarContrato.SetActiveView(vDetalle);
                btnModificarDetalle.Visible = Edicion;
            }
        }


        /// <summary> Metodo que se ejecuta cuando se selecciona el nombre de un fiador </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void GvDatosFiadorIndexChange(object sender, EventArgs e)
        {
            Edicion = true;
            AgregarFiador = false;
            IdFiador = Contrato.Fiadores[gvDatosFiador.SelectedIndex].Id;
            _presentador.CargarDatosFiador(IdFiador);
            mvAdministrarContrato.SetActiveView(vAgregarGarantia);
            rbFiador.Checked = true;
            pnFiador.Visible = rbFiador.Checked;
            pnMontoGarantia.Visible = !rbFiador.Checked;
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de agregar Poliza </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void LbAgregarPolizaClick(object sender, EventArgs e)
        {
            Edicion = true;
            AgregarPoliza = true;
            mvAdministrarContrato.SetActiveView(vAgregarPoliza);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de regresar en la vista de ingresar poliza </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnRegresarIngresarPolizaClick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vDetalle);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de siguiente en la vista de ingresar poliza </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnSiguienteIngresarPolizaClick(object sender, EventArgs e)
        {
            Page.Validate("DatosPoliza");
            if (!Page.IsValid) return;
            if (AgregarPoliza)
                _presentador.AgregarPoliza();
            else
                _presentador.ModificarPoliza(IdPoliza);
            mvAdministrarContrato.SetActiveView(vDetalle);
            btnModificarDetalle.Visible = Edicion;
        }


        /// <summary> Custom validator que valida que la fecha fin sea mayor a la fecha de inicio </summary>
        /// <param name="source">Objeto que activa el evento</param>
        /// <param name="args">Objeto con el argumento del evento</param>
        protected void ValidarFechasPoliza(object source, ServerValidateEventArgs args)
        {
            if (string.IsNullOrEmpty(tbFechaEmision.Text) || (string.IsNullOrEmpty(tbFechaVencimiento.Text))) return;
            DateTime fechaInicio = Convert.ToDateTime(tbFechaEmision.Text);
            DateTime fechaFin = Convert.ToDateTime(tbFechaVencimiento.Text);
            args.IsValid = fechaFin > fechaInicio;
        }


        /// <summary> Metodo que se ejecuta cuando se selecciona el nombre de un fiador </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void GvDatosPolizaIndexChange(object sender, EventArgs e)
        {
            Edicion = true;
            AgregarPoliza = false;
            IdPoliza = Contrato.Polizas[gvDatosPoliza.SelectedIndex].Id;
            _presentador.CargarDatosPoliza(IdPoliza);
            mvAdministrarContrato.SetActiveView(vAgregarPoliza);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al nombre comercial </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void NombreComercialClick(object sender, EventArgs e)
        {
            Edicion = true;
            _presentador.CargarDatosPrincipales();
            mvAdministrarContrato.SetActiveView(vAgregarContrato);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton regresar de la edicion de los datos principales </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnCancelarDatosPrincipalesCLick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vDetalle);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton aceptar de la edicion de los datos principales </summary>
        /// <param name="sender">Objeto que generó el evento.</param>
        /// <param name="e">Argumento del evento.</param>
        protected void BtnSiguienteDatosPrincipalesClick(object sender, EventArgs e)
        {

            _presentador.ModificarDatosPrincipales();
            mvAdministrarContrato.SetActiveView(vDetalle);
            btnModificarDetalle.Visible = Edicion;
        }


        /// <summary> Custom validator que valida que la fecha fin sea mayor a la fecha de inicio </summary>
        /// <param name="source">Objeto que activa el evento</param>
        /// <param name="args">Objeto con el argumento del evento</param>
        protected void ValidarFechas(object source, ServerValidateEventArgs args)
        {
            if ((!string.IsNullOrEmpty(tbFechaInicioContrato.Text)) && (!string.IsNullOrEmpty(tbFechaFinContrato.Text)))
            {
                DateTime fechaInicio = Convert.ToDateTime(tbFechaInicioContrato.Text);
                DateTime fechaFin = Convert.ToDateTime(tbFechaFinContrato.Text);
                args.IsValid = fechaFin > fechaInicio;
            }
        }

        #endregion
    
        #region Propiedades

        /// <summary> Propiedad que obtiene y asigna el tipo de establecimiento para la busqueda </summary>
        public ClickLandDropDownList TipoEstablecimientoBusqueda
        {
            get { return ddlTipoEstablecimiento; }
            set { throw new NotImplementedException(); }
        }


        /// <summary> Propiedad que obtiene el nombre comercial para la busqueda </summary>
        public string NombreComercialBusqueda
        {
            get { return tbNombreComercial.Text; }
            set { tbNombreComercial.Text = value; }
        }


        /// <summary> Propiedad que obtiene el nombre del cliente para la busqueda </summary>
        public string NombreClienteBusqueda
        {
            get { return tbNombreCliente.Text; }
            set { tbNombreCliente.Text = value; }
        }


        /// <summary> Propiuedad que asgina u obtiene la lista de contratos consultados </summary>
        public List<ContratoDto> ListaContratos
        {
            get { return (List<ContratoDto>) Session["ListaContratos"]; }
            set
            {
                Session["ListaContratos"] = value;
                gvDatosContratos.DataSource = value;
                gvDatosContratos.DataBind();
            }
        }

        
        /// <summary> Propiedad que asigna el valor del nombre del cliente para la Detalle </summary>
        public string NombreClienteDetalle
        {
            set { lblNombreClienteDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el valor de la fecha del contrato para la Detalle </summary>
        public string FechaInicioDetalle
        {
            set { lblFechaInicioDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el valor de la fecha de finalizacion del contrato para la Detalle </summary>
        public string FechaFinDetalle
        {
            set { lblFechaFinDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el nombre del establecimiento para la Detalle </summary>
        public string EstablecimientoDetalle
        {
            set { lblEstablecimientoDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el porcentaje de venta para el contrato para la Detalle </summary>
        public string PorcentajeDetalle
        {
            set { lblPorcentajeVentaDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el tipo de firma el contrato para la Detalle </summary>
        public string TipoFirmaDetalle
        {
            set { lblTipoFirmaDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el nombre del firmante contrato para la Detalle </summary>
        public string NombreFirmanteDetalle
        {
            set { lbloNombreFirmanteDetalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el nombre del firmante contrato para la Detalle </summary>
        public string NombreFirmante2Detalle
        {
            set { lbloNombreFirmante2Detalle.Text = value; }
        }


        /// <summary> Propiedad que asigna el nombre del firmante contrato para la Detalle </summary>
        public string NombreFirmante3Detalle
        {
            set { lbloNombreFirmante3Detalle.Text = value; }
        }


        /// <summary> Propiedad que asgina la visibilidad de otros firmantes </summary>
        public bool HayOtroFirmantes
        {
            set
            {
                DetalleOtroFirmantes.Visible = value;
                OtroFirmantes.Visible = value;
            }
        }


        /// <summary> Propiedad que obtiene el nombre comercial en la comercial </summary>
        public string NombreComercialDetalle
        {
            set { lblNombreComercialDetalle.Text = value; }
        }


        /// <summary> Propiedad que da valor a la lista de canon ingresado por el cliente </summary>
        public ContratoPensionDto[] ListaCanonDetalle
        {
            set
            {
                gvListaCanonDetalle.DataSource = value;
                gvListaCanonDetalle.DataBind();
            }
        }


        /// <summary> Propiedad que asgina el tipo de Incremento en la Detalle </summary>
        public string TipoIncrementoDetalle
        {
            set { lblTipoIncrementoDetalle.Text = value; }
        }


        /// <summary> Propiedad que asgina la informacion del fiador en la Detalle </summary>
        public FiadorDto[] FiadorDetalle
        {
            set
            {
                gvDatosFiador.DataSource = value;
                gvDatosFiador.DataBind();
            }
        }


        /// <summary> Propiedad que asgina el valor al monto de garantia ingresado por el usuario </summary>
        public string MontoGarantiaDetalle
        {
            set { lblMontoGarantiaDetalle.Text = value; }
        }


        /// <summary> Propiedad que asgina la informacion de la poliza en la Detalle </summary>
        public PolizaDto[] PolizaDetalle
        {
            set
            {
                lblTituloDatosPoliza.Visible = value != null;
                gvDatosPoliza.DataSource = value;
                gvDatosPoliza.DataBind();
            }
        }


        /// <summary> Propiedad que obtiene la informacion del contrato </summary>
        public ContratoDto Contrato
        {
            get { return (ContratoDto)Session["Contrato"]; }
            set { Session["Contrato"] = value; }
        }


        /// <summary> Propiedad que indica si la accion cuando se da click al boton de aceptar en el flujo de fiador es por agregar o editar </summary>
        protected bool AgregarFiador
        {
            get { return Session["AgregarFiador"] != null && (bool)Session["AgregarFiador"]; }
            set { Session["AgregarFiador"] = value; }
        }


        /// <summary> Propiedad que indica si la accion cuando se da click al boton de aceptar en el flujo de poliza es por agregar o editar </summary>
        protected bool AgregarPoliza
        {
            get { return Session["AgregarPoliza"] != null && (bool)Session["AgregarPoliza"]; }
            set { Session["AgregarPoliza"] = value; }
        }


        /// <summary> Propiedad que indica si la accion cuando se da click al boton de aceptar en el flujo de poliza es por agregar o editar </summary>
        protected bool Edicion
        {
            get { return Session["Edicion"] != null && (bool)Session["Edicion"]; }
            set { Session["Edicion"] = value; }
        }


        /// <summary> Propiedad que obtiene si el tipo de garantia es fiador </summary>
        public bool GarantiaFiador
        {
            get { return rbFiador.Checked; }
        }


        /// <summary> Propiedad que obtiene el nombre del fiador </summary>
        public string NombreFiador
        {
            get { return tbNombreFiador.Text; }
            set { tbNombreFiador.Text = value; }
        }


        /// <summary> Propiedad que obtiene el numero de cedula ingresado por el usuario </summary>
        public string CedulaFiador
        {
            get { return ddlTipoDocumento.SelectedItem.Text + tbCedulaFiador.Text; }
            set
            {
                ddlTipoDocumento.Items.FindByText(value.Substring(0, 1)).Selected = true;
                tbCedulaFiador.Text = value.Substring(1);
            }
        }


        /// <summary> Propiedad que obtiene el numero de telefono </summary>
        public string NumeroTelefonoFiador
        {
            get { return tbCodigoAreaTelefono.Text + tbNumeroTelefono.Text; }
            set
            {
                tbCodigoAreaTelefono.Text = value.Substring(0, 4);
                tbNumeroTelefono.Text = value.Substring(4);
            }
        }


        /// <summary> Propiedad que obtiene el correo electronico del fiador </summary>
        public string CorreoFiador
        {
            get { return tbCorreoFiador.Text; }
            set { tbCorreoFiador.Text = value; }
        }


        /// <summary> Monto de la garantia ingresada </summary>
        public string MontoGaranta
        {
            get { return tbMontoGarantia.Text; }
            set { tbMontoGarantia.Text = value; }
        }


        /// <summary> Identificador del fiador seleccionado para ser modificado </summary>
        protected long IdFiador
        {
            get { return Session["IdFiador"] == null ? -1 : (long)Session["IdFiador"]; }
            set { Session["IdFiador"] = value; }
        }


        /// <summary> Identificador de la poliza seleccionado para ser modificado </summary>
        protected int IdPoliza
        {
            get { return Session["IdPoliza"] == null ? -1 : (int)Session["IdPoliza"]; }
            set { Session["IdPoliza"] = value; }
        }


        /// <summary> Propiedad que obtiene el tipo de documento seleccionado </summary>
        public ClickLandDropDownList TipoDocumento
        {
            get { return ddlTipoDocumento; }
        }


        /// <summary> Fecha de emision de la poliza </summary>
        public DateTime FechaEmisionPoliza
        {
            get { return DateTime.Parse(tbFechaEmision.Text); }
            set { tbFechaEmision.Text = value.ToString("dd/MM/yyyy"); }
        }


        /// <summary> Fecha de vencimiento de poliza </summary>
        public DateTime FechaVencimientoPoliza
        {
            get { return DateTime.Parse(tbFechaVencimiento.Text); }
            set { tbFechaVencimiento.Text = value.ToString("dd/MM/yyyy"); }
        }


        /// <summary> Propiedad que obtiene el monto de la poliza </summary>
        public string MontoPoliza
        {
            get { return tbMontoPoliza.Text; }
            set { tbMontoPoliza.Text = value; }
        }


        /// <summary> Propiedad que obtiene el nombre de la empresa aseguradora </summary>
        public string EmpresaAsegurador
        {
            get { return tbEmpresaAseguradora.Text; }
            set { tbEmpresaAseguradora.Text = value; }
        }


        /// <summary> Propiedad que obtiene el nombre del beneficiario de la poliza </summary>
        public string NombreBeneficiarioPoliza
        {
            get { return tbBeneficiario.Text; }
            set { tbBeneficiario.Text = value; }
        }

        
        /// <summary> Propiedad que obtiene el control que lista los tipos de firmas seleccionado </summary>
        public ClickLandDropDownList TipoFirma
        {
            get { return ddlTipoFirma; }
        }


        /// <summary> Propiedad que obtiene el control que lista el canon </summary>
        public ClickLandGridView ListaCanon
        {
            get { throw new NotImplementedException(); }
        }


        /// <summary> Propiedad que obtiene la fecha de inicio del contrato </summary>
        public DateTime FechaInicioContrato
        {
            get { return DateTime.Parse(tbFechaInicioContrato.Text); }
            set { tbFechaInicioContrato.Text = value.ToString("dd/MM/yyyy"); }
        }


        /// <summary> Propiedad que obtiene la fecha fin del contrato </summary>
        public DateTime FechaFinContrato
        {
            get { return DateTime.Parse(tbFechaFinContrato.Text); }
            set { tbFechaFinContrato.Text = value.ToString("dd/MM/yyyy"); }
        }


        /// <summary> Propiedad que obtiene el porcentaje de venta indicado </summary>
        public string PorcentajeVenta
        {
            get { return tbPorcentaje.Text; }
            set { tbPorcentaje.Text = value; }
        }


        /// <summary> Propiedad que obtiene el porcentaje de venta indicado </summary>
        public string NombreFirmante
        {
            get { return tbNombreFirmante.Text; }
            set { tbNombreFirmante.Text = value; }
        }


        /// <summary> Propiedad que obtiene el porcentaje de venta indicado </summary>
        public string NombreFirmante2
        {
            get { return tbNombreFirmante2.Text; }
            set { tbNombreFirmante2.Text = value; }
        }


        /// <summary> Propiedad que obtiene el porcentaje de venta indicado </summary>
        public string NombreFirmante3
        {
            get { return tbNombreFirmante3.Text; }
            set { tbNombreFirmante3.Text = value; }
        }


        /// <summary> Propiedad que obtiene el nombre del comercial </summary>
        public string NombreComercial
        {
            get { return tbNombreComercialDatos.Text; }
            set { tbNombreComercialDatos.Text = value; }
        }


        /// <summary> Propiedad que asigna la lista de recaudos del contrato </summary>
        public RecaudoDto[] ListaRecaudos
        {
            get { throw new NotImplementedException(); }
            set
            {
                gvListaRecaudos.DataSource = value;
                gvListaRecaudos.DataBind();
            }
        }

        public string TituloReporte
        {
            get { return Etiquetas.TituloReporteContrato; }
        }

        #endregion

        /// <summary> Metodo que se ejecuta cuando se selecciona un contrato </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GvDatosContratosRowCommando(object sender, GridViewCommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandArgument);
            if (e.CommandName == "Detalle")
            {
                Edicion = false;
                _presentador.MostrarDetalle(Convert.ToInt32(id));
                mvAdministrarContrato.SetActiveView(vDetalle);
                btnModificarDetalle.Visible = Edicion;
            }

            if (e.CommandName == "Recaudos")
            {
                _presentador.MostrarRecaudos(id);
                mvAdministrarContrato.SetActiveView(vRecaudos);
            }
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de regresar en la vista de recaudos </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnRegresarRecaudosCLick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vBusqueda);
               
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de aceptar recaudo</summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnAceptarRecaudosClick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vBusqueda);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton regresar de la vista de error </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnRegresarErrorOnClick(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vDetalle);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de imprimir </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnImprimiClick(object sender, EventArgs e)
        {
            Response.ClearContent();
            Response.ClearHeaders();
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + "ReporteConsultaContrato.pdf");
            Response.TransmitFile(ConfigurationManager.AppSettings["RutaDescarga"] + "ReporteConsultaContrato.pdf");
            Response.End();
            Response.Flush();
            Response.Clear();
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de aceptar el mensaje de exito </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnAceptarExito(object sender, EventArgs e)
        {
            Response.Redirect("~/Default.aspx");
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de eliminar contrato </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnEliminarContrato(object sender, EventArgs e)
        {
            _presentador.EliminarContrato();
        }


        /// <summary> Metodo que se ejecuta cuando se da crea una fila del grid view de contratos </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GvDatosContratosRowDataBound(object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType != DataControlRowType.DataRow) return;

            var estado = ((Literal) e.Row.FindControl("literalEstado")).Text;
            ((Literal) e.Row.FindControl("literalEstado")).Text = estado == "0" ? Etiquetas.Inactivo : Etiquetas.Activo;

            if (estado == "0")
            {
                e.Row.BackColor = Color.Red;
                e.Row.ForeColor = Color.White;
            }

        }


        /// <summary>
        /// Metodo que se ejecuta cuando se da click al boton regresar en la vista del reporte
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnRegresarReporte(object sender, EventArgs e)
        {
            mvAdministrarContrato.SetActiveView(vBusqueda);
        }


        /// <summary> Metodo que se ejecuta cuando se da click al boton de generar pdf </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnGenerarPdf(object sender, EventArgs e)
        {
            _presentador.ImprimirReporte();
            myPDF.Attributes["src"] = ConfigurationManager.AppSettings["RutaDescargaOnLine"] + "ReporteConsultaContrato.pdf";
            mvAdministrarContrato.SetActiveView(vReporte);

        }
    }
}